<?php

function getURL(){
	$_SERVER['FULL_URL'] = 'http';

	if(@$_SERVER['HTTPS']=='on'){
		$_SERVER['FULL_URL'] .=  's';
	}
	$_SERVER['FULL_URL'] .=  '://';

	if($_SERVER['SERVER_PORT']!='80')
		$_SERVER['FULL_URL'] .=  $_SERVER['HTTP_HOST'].':'.$_SERVER['SERVER_PORT'].$_SERVER['SCRIPT_NAME'];
	else
		$_SERVER['FULL_URL'] .=  $_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];

	/*if($_SERVER['QUERY_STRING']>' '){
		$_SERVER['FULL_URL'] .=  '?'.$_SERVER['QUERY_STRING'];
	}*/

	return $_SERVER['FULL_URL'];
}

function dateDiff($beginDate, $endDate, $dformat='/'){

	$date_parts1=explode($dformat, $beginDate);
	$date_parts2=explode($dformat, $endDate);
	$start_date=gregoriantojd($date_parts1[1], $date_parts1[0], $date_parts1[2]);
	$end_date=gregoriantojd($date_parts2[1], $date_parts2[0], $date_parts2[2]);

	return $end_date - $start_date;
}

/**
 * Función que añade cierta cantidad de dias, meses o años a una fecha dada
 *
 * @param $fechaini Fecha inicial a incrementar
 * @param $adelanto Cantidad q se desea incrementar en dias, meses o años.
 * @param $unidad Unidad del incremento, puede ser dia,dias,mes,meses,año,años
 * @return $fechafin Fecha con el adelanto deseado
 */

function dateAdd($fechaini,$adelanto,$unidad){
	$fecha = explode("/",$fechaini);
   	$mes = $fecha[1];
    $anio = $fecha[2];
    $dia = $fecha[0];
    
    $dia_sig = $dia;
    $mes_sig = $mes;
    $anio_sig = $anio;
 
    if(strtolower($unidad) == 'dia' || strtolower($unidad) == 'dias'){
    	$dia_sig += $adelanto;
    	$ultimo_dia = date( "d", mktime(0, 0, 0, $mes_sig + 1, 0, $anio_sig) );
    	while ($ultimo_dia < $dia_sig){
         $dia_sig -= $ultimo_dia;
         $mes_sig++;
         $ultimo_dia = date( "d", mktime(0, 0, 0, $mes_sig + 1, 0, $anio_sig) );
    	}
    }
    else if(strtolower($unidad) == 'mes' || strtolower($unidad) == 'meses')
    	$mes_sig += $adelanto;    	 	
    else if (strtolower($unidad) == 'año' || strtolower($unidad) == 'años')
    	$anio_sig += $adelanto;
    	
    if ($mes_sig/12 > 1){    	
    	$anio_sig += floor($mes_sig/12);
    	$mes_sig = $mes_sig%12;
    }
    
    $fechafin = $dia_sig.'/'.$mes_sig.'/'.$anio_sig;                 
    return $fechafin;
   }

    /**
     * Sorts an array of objects by the value of one of the object properties or array keys
     *
     * @param array $array
     * @param key value $id
     * @param boolean $sort_ascending
     * @param boolean $is_object_array
     * @return array
     */
 function vsort($array, $id="id", $sort_ascending=true, $is_object_array = false) {
        $temp_array = array();
        while(count($array)>0) {
            $lowest_id = 0;
            $index=0;
            if($is_object_array){
                foreach ($array as $item) {
                    if (isset($item->$id)) 
                    	if ($array[$lowest_id]->$id)
                    		if ($item->$id<$array[$lowest_id]->$id)
                    			$lowest_id = $index;                                                    
                    $index++;
                }
            }else{
                foreach ($array as $item) {
                    if (isset($item[$id]))
                    	if ($array[$lowest_id][$id])
                    		if ($item[$id]<$array[$lowest_id][$id])
                    			$lowest_id = $index;                                                                                 
                    $index++;
                }                             
            }
            $temp_array[] = $array[$lowest_id];
            $array = array_merge(array_slice($array, 0,$lowest_id), array_slice($array, $lowest_id+1));
        }
        if ($sort_ascending)
            return $temp_array;
        else
            return array_reverse($temp_array);
    }
   
?>